home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / auto_fs4.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  4KB  |  165 lines

  1. /* -*- c -*-
  2.  * linux/include/linux/auto_fs4.h
  3.  *
  4.  * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
  5.  *
  6.  * This file is part of the Linux kernel and is made available under
  7.  * the terms of the GNU General Public License, version 2, or at your
  8.  * option, any later version, incorporated herein by reference.
  9.  */
  10.  
  11. #ifndef _LINUX_AUTO_FS4_H
  12. #define _LINUX_AUTO_FS4_H
  13.  
  14. /* Include common v3 definitions */
  15. #include <linux/types.h>
  16. #include <linux/auto_fs.h>
  17.  
  18. /* autofs v4 definitions */
  19. #undef AUTOFS_PROTO_VERSION
  20. #undef AUTOFS_MIN_PROTO_VERSION
  21. #undef AUTOFS_MAX_PROTO_VERSION
  22.  
  23. #define AUTOFS_PROTO_VERSION        5
  24. #define AUTOFS_MIN_PROTO_VERSION    3
  25. #define AUTOFS_MAX_PROTO_VERSION    5
  26.  
  27. #define AUTOFS_PROTO_SUBVERSION        1
  28.  
  29. /* Mask for expire behaviour */
  30. #define AUTOFS_EXP_IMMEDIATE        1
  31. #define AUTOFS_EXP_LEAVES        2
  32.  
  33. #define AUTOFS_TYPE_ANY            0U
  34. #define AUTOFS_TYPE_INDIRECT        1U
  35. #define AUTOFS_TYPE_DIRECT        2U
  36. #define AUTOFS_TYPE_OFFSET        4U
  37.  
  38. static __inline__ void set_autofs_type_indirect(unsigned int *type)
  39. {
  40.     *type = AUTOFS_TYPE_INDIRECT;
  41.     return;
  42. }
  43.  
  44. static __inline__ unsigned int autofs_type_indirect(unsigned int type)
  45. {
  46.     return (type == AUTOFS_TYPE_INDIRECT);
  47. }
  48.  
  49. static __inline__ void set_autofs_type_direct(unsigned int *type)
  50. {
  51.     *type = AUTOFS_TYPE_DIRECT;
  52.     return;
  53. }
  54.  
  55. static __inline__ unsigned int autofs_type_direct(unsigned int type)
  56. {
  57.     return (type == AUTOFS_TYPE_DIRECT);
  58. }
  59.  
  60. static __inline__ void set_autofs_type_offset(unsigned int *type)
  61. {
  62.     *type = AUTOFS_TYPE_OFFSET;
  63.     return;
  64. }
  65.  
  66. static __inline__ unsigned int autofs_type_offset(unsigned int type)
  67. {
  68.     return (type == AUTOFS_TYPE_OFFSET);
  69. }
  70.  
  71. static __inline__ unsigned int autofs_type_trigger(unsigned int type)
  72. {
  73.     return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
  74. }
  75.  
  76. /*
  77.  * This isn't really a type as we use it to say "no type set" to
  78.  * indicate we want to search for "any" mount in the
  79.  * autofs_dev_ioctl_ismountpoint() device ioctl function.
  80.  */
  81. static __inline__ void set_autofs_type_any(unsigned int *type)
  82. {
  83.     *type = AUTOFS_TYPE_ANY;
  84.     return;
  85. }
  86.  
  87. static __inline__ unsigned int autofs_type_any(unsigned int type)
  88. {
  89.     return (type == AUTOFS_TYPE_ANY);
  90. }
  91.  
  92. /* Daemon notification packet types */
  93. enum autofs_notify {
  94.     NFY_NONE,
  95.     NFY_MOUNT,
  96.     NFY_EXPIRE
  97. };
  98.  
  99. /* Kernel protocol version 4 packet types */
  100.  
  101. /* Expire entry (umount request) */
  102. #define autofs_ptype_expire_multi    2
  103.  
  104. /* Kernel protocol version 5 packet types */
  105.  
  106. /* Indirect mount missing and expire requests. */
  107. #define autofs_ptype_missing_indirect    3
  108. #define autofs_ptype_expire_indirect    4
  109.  
  110. /* Direct mount missing and expire requests */
  111. #define autofs_ptype_missing_direct    5
  112. #define autofs_ptype_expire_direct    6
  113.  
  114. /* v4 multi expire (via pipe) */
  115. struct autofs_packet_expire_multi {
  116.     struct autofs_packet_hdr hdr;
  117.         autofs_wqt_t wait_queue_token;
  118.     int len;
  119.     char name[NAME_MAX+1];
  120. };
  121.  
  122. union autofs_packet_union {
  123.     struct autofs_packet_hdr hdr;
  124.     struct autofs_packet_missing missing;
  125.     struct autofs_packet_expire expire;
  126.     struct autofs_packet_expire_multi expire_multi;
  127. };
  128.  
  129. /* autofs v5 common packet struct */
  130. struct autofs_v5_packet {
  131.     struct autofs_packet_hdr hdr;
  132.     autofs_wqt_t wait_queue_token;
  133.     __u32 dev;
  134.     __u64 ino;
  135.     __u32 uid;
  136.     __u32 gid;
  137.     __u32 pid;
  138.     __u32 tgid;
  139.     __u32 len;
  140.     char name[NAME_MAX+1];
  141. };
  142.  
  143. typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
  144. typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
  145. typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
  146. typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
  147.  
  148. union autofs_v5_packet_union {
  149.     struct autofs_packet_hdr hdr;
  150.     struct autofs_v5_packet v5_packet;
  151.     autofs_packet_missing_indirect_t missing_indirect;
  152.     autofs_packet_expire_indirect_t expire_indirect;
  153.     autofs_packet_missing_direct_t missing_direct;
  154.     autofs_packet_expire_direct_t expire_direct;
  155. };
  156.  
  157. #define AUTOFS_IOC_EXPIRE_MULTI        _IOW(0x93,0x66,int)
  158. #define AUTOFS_IOC_EXPIRE_INDIRECT    AUTOFS_IOC_EXPIRE_MULTI
  159. #define AUTOFS_IOC_EXPIRE_DIRECT    AUTOFS_IOC_EXPIRE_MULTI
  160. #define AUTOFS_IOC_PROTOSUBVER        _IOR(0x93,0x67,int)
  161. #define AUTOFS_IOC_ASKUMOUNT        _IOR(0x93,0x70,int)
  162.  
  163.  
  164. #endif /* _LINUX_AUTO_FS4_H */
  165.